ioemu: Slown down refresh interval when SDL is minimized
authorKeir Fraser <keir.fraser@citrix.com>
Wed, 5 Mar 2008 09:43:03 +0000 (09:43 +0000)
committerKeir Fraser <keir.fraser@citrix.com>
Wed, 5 Mar 2008 09:43:03 +0000 (09:43 +0000)
as that saves us the VGA refresh scanning.

Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com>
tools/ioemu/sdl.c
tools/ioemu/vl.c
tools/ioemu/vl.h

index 2f6701e254d2685d294e8af709387aa9e4e26eec..c3be1721226b21f92a34987593b6090de0742675 100644 (file)
@@ -518,6 +518,15 @@ static void sdl_refresh(DisplayState *ds)
                 !ev->active.gain && !gui_fullscreen_initial_grab) {
                 sdl_grab_end();
             }
+           if (ev->active.state & SDL_APPACTIVE) {
+               if (ev->active.gain) {
+                   /* Back to default interval */
+                   ds->gui_timer_interval = 0;
+               } else {
+                   /* Sleeping interval */
+                   ds->gui_timer_interval = 500;
+               }
+           }
             break;
         default:
             break;
index b645ca3ea698ba6fdb3fb8b2ac623a7889b9f244..a5cc09ce195ae30f3cc19dc6be26097566dc1ea1 100644 (file)
@@ -6125,7 +6125,11 @@ QEMUMachine *find_machine(const char *name)
 void gui_update(void *opaque)
 {
     display_state.dpy_refresh(&display_state);
-    qemu_mod_timer(gui_timer, GUI_REFRESH_INTERVAL + qemu_get_clock(rt_clock));
+    qemu_mod_timer(gui_timer,
+            (display_state.gui_timer_interval ?
+                display_state.gui_timer_interval :
+                GUI_REFRESH_INTERVAL)
+            + qemu_get_clock(rt_clock));
 }
 
 struct vm_change_state_entry {
index fcaf70488d26ec17b0fe6f7c60cf486cb24a72bc..ff2f5463c4c5b7aacf43f8eb8feb4b5b04ac56fe 100644 (file)
@@ -935,6 +935,7 @@ struct DisplayState {
     int width;
     int height;
     void *opaque;
+    uint64_t gui_timer_interval;
 
     int switchbpp;
     int shared_buf;